iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0
Modern Web

PHP laravel的邂逅系列 第 10

DAY10-View介紹

  • 分享至 

  • xImage
  •  

DAY10-View介紹

在傳統的php寫法中,html裡面混著各種php的邏輯語法,還有資料庫語法等等,這邊主要介紹的是laravel是怎麼切出view還有樣板引擎blade該怎麼使用,你就可以脫離各種語法混在一起的地獄了。

在前幾天介紹route的時候,回傳view的檔案都是放在route的閉包裡面,已經介紹過controller了,就可以把view移到controller裡面去了,route就讓他專門做route的事,邏輯部分就都移到controller裡面去做就可以了。

先來新增一個新的view檔案,view檔案的路徑resources/views,新增一個叫hello.blade.php的檔案,除了要加上php外,記得還要加上blade,這樣laravel才能辨識該檔案

// path resources/views  
// hello.blade.php

<!doctype html>
<html>
    <head>
        <title>Laravel</title>

        <!-- Styles -->
        <style>
            
        </style>
    </head>
    <body>
        <h1>hello world</h1>
    </body>
</html>

在昨天的NewsController裡面加上一個hello Function還有回傳view檔案。

// Http/Controllers/NewsController.php

public function hello(){
    return view('hello');
}

在route中新增一個router,這時候就可以到網頁上去測試看看有沒有跑出hello world來。

// path routes/web.php
Route::get('/hello','NewsController@hello');

上面已經在controller裡面抓到view了,現在來試試看把query值傳進view裡面顯示出來。

// path routes/web.php

Route::get('/news/{id}','NewsController@show_id')

下面兩種方法都可以把變數傳進去

// Http/Controllers/NewsController.php

public function show_id($id){
    //第一種傳變數進view的方法
    return view('hello')->with('id',$id);
    //第二種方法
    return view('hello',compact('id',$id));
}

變數要傳進view必須用兩組大括號包起來,這樣才能抓到變數的值

// path resources/views  
// hello.blade.php


<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">

        <!-- Styles -->
        <style>
            
        </style>
    </head>
    <body>
        <div class="container">
          <!--變數必須用大括號包起來 -->
          <h1>news_id:{{$id}}</h1>
        </div>
    </body>
</html>

接著在網址打上:http://127.0.0.1:8000/new/2 ,試試看有沒有印出query的值,以上就是今天view介紹囉


上一篇
DAY09-Controller介紹 PART 2
下一篇
DAY11-blade介紹
系列文
PHP laravel的邂逅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
u2002020021
iT邦新手 5 級 ‧ 2018-09-16 21:54:30

oliver大大~

Route::get('/news/{id}','NewsController@show_id')
在網址打上:http://127.0.0.1:8000/new/2

-> 這個地方應該是 http://127.0.0.1:8000/news/2

0
neohsu1214
iT邦見習生 ‧ 2019-03-02 00:59:20

Route::get('/news/{id}','NewsController@show_id')
宣告會與
Route::resource('news','NewsController');
所自動產生出來的
Route::get('/news/{id}','NewsController@show');
動作衝突

使得輸入 http://127.0.0.1:8000/news/2
會輸出 『最新消息2』

若如最後的URL所述是 http://127.0.0.1:8000/new/2 的話
則在 web.php 中的宣告應該是
Route::get('/new/{id}','NewsController@show_id');

我要留言

立即登入留言